namespace ext.dd
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>A simple class that provides the basic implementation needed to make any element draggable.</summary>
	/// <definedin>src\dd\DragSource.js</definedin>
	[ScriptName("DragSource")]
	[ScriptNamespace("Ext.dd")]
	[Imported()]
	public partial class DragSource : ext.dd.DDProxy
	{
		
		#region Constructors
		/// <summary>Constructor</summary>
		/// <param name="el">The container element</param>
		/// <param name="config"></param>
		public DragSource(object el, ext.dd.DragSource_Configuration config)
		{
		}
		
		/// <summary>Constructor</summary>
		public DragSource()
		{
		}
		#endregion
		
		#region Fields
		/// <summary>
		/// A named drag drop group to which this object belongs. If a group is specified, then this object will only
		/// interact with other drag drop objects in the same group (defaults to undefined).
		/// </summary>
		/// <definedin>src\dd\DragSource.js</definedin>
		[ScriptName("ddGroup")]
		public string DdGroup;
		
		/// <summary>The CSS class returned to the drag source when drop is allowed (defaults to &quot;x-dd-drop-ok&quot;).</summary>
		/// <definedin>src\dd\DragSource.js</definedin>
		[ScriptName("dropAllowed")]
		public string DropAllowed;
		
		/// <summary>The CSS class returned to the drag source when drop is not allowed (defaults to &quot;x-dd-drop-nodrop&quot;).</summary>
		/// <definedin>src\dd\DragSource.js</definedin>
		[ScriptName("dropNotAllowed")]
		public string DropNotAllowed;
		#endregion
		
		#region Methods
		/// <summary>Returns the data object associated with this drag source</summary>
		/// <definedin>src\dd\DragSource.js</definedin>
		/// <returns>data An object containing arbitrary data</returns>
		[ScriptName("getDragData")]
		public object GetDragData()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// An empty function by default, but provided so that you can perform a custom action
		/// when the dragged item enters the drop target by providing an implementation.
		/// </summary>
		/// <definedin>src\dd\DragSource.js</definedin>
		/// <param name="target">The drop target</param>
		/// <param name="e">The event object</param>
		/// <param name="id">The id of the dragged element</param>
		[ScriptName("afterDragEnter")]
		public void AfterDragEnter(ext.dd.DragDrop target, System.Html.ElementEvent e, string id)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// An empty function by default, but provided so that you can perform a custom action
		/// before the dragged item enters the drop target and optionally cancel the onDragEnter.
		/// </summary>
		/// <definedin>src\dd\DragSource.js</definedin>
		/// <param name="target">The drop target</param>
		/// <param name="e">The event object</param>
		/// <param name="id">The id of the dragged element</param>
		/// <returns>isValid True if the drag event is valid, else false to cancel</returns>
		[ScriptName("beforeDragEnter")]
		public bool BeforeDragEnter(ext.dd.DragDrop target, System.Html.ElementEvent e, string id)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// An empty function by default, but provided so that you can perform a custom action
		/// while the dragged item is over the drop target by providing an implementation.
		/// </summary>
		/// <definedin>src\dd\DragSource.js</definedin>
		/// <param name="target">The drop target</param>
		/// <param name="e">The event object</param>
		/// <param name="id">The id of the dragged element</param>
		[ScriptName("afterDragOver")]
		public void AfterDragOver(ext.dd.DragDrop target, System.Html.ElementEvent e, string id)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// An empty function by default, but provided so that you can perform a custom action
		/// while the dragged item is over the drop target and optionally cancel the onDragOver.
		/// </summary>
		/// <definedin>src\dd\DragSource.js</definedin>
		/// <param name="target">The drop target</param>
		/// <param name="e">The event object</param>
		/// <param name="id">The id of the dragged element</param>
		/// <returns>isValid True if the drag event is valid, else false to cancel</returns>
		[ScriptName("beforeDragOver")]
		public bool BeforeDragOver(ext.dd.DragDrop target, System.Html.ElementEvent e, string id)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// An empty function by default, but provided so that you can perform a custom action
		/// after the dragged item is dragged out of the target without dropping.
		/// </summary>
		/// <definedin>src\dd\DragSource.js</definedin>
		/// <param name="target">The drop target</param>
		/// <param name="e">The event object</param>
		/// <param name="id">The id of the dragged element</param>
		[ScriptName("afterDragOut")]
		public void AfterDragOut(ext.dd.DragDrop target, System.Html.ElementEvent e, string id)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// An empty function by default, but provided so that you can perform a custom action before the dragged
		/// item is dragged out of the target without dropping, and optionally cancel the onDragOut.
		/// </summary>
		/// <definedin>src\dd\DragSource.js</definedin>
		/// <param name="target">The drop target</param>
		/// <param name="e">The event object</param>
		/// <param name="id">The id of the dragged element</param>
		/// <returns>isValid True if the drag event is valid, else false to cancel</returns>
		[ScriptName("beforeDragOut")]
		public bool BeforeDragOut(ext.dd.DragDrop target, System.Html.ElementEvent e, string id)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// An empty function by default, but provided so that you can perform a custom action
		/// after a valid drag drop has occurred by providing an implementation.
		/// </summary>
		/// <definedin>src\dd\DragSource.js</definedin>
		/// <param name="target">The drop target</param>
		/// <param name="e">The event object</param>
		/// <param name="id">The id of the dropped element</param>
		[ScriptName("afterDragDrop")]
		public void AfterDragDrop(ext.dd.DragDrop target, System.Html.ElementEvent e, string id)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// An empty function by default, but provided so that you can perform a custom action before the dragged
		/// item is dropped onto the target and optionally cancel the onDragDrop.
		/// </summary>
		/// <definedin>src\dd\DragSource.js</definedin>
		/// <param name="target">The drop target</param>
		/// <param name="e">The event object</param>
		/// <param name="id">The id of the dragged element</param>
		/// <returns>isValid True if the drag drop event is valid, else false to cancel</returns>
		[ScriptName("beforeDragDrop")]
		public bool BeforeDragDrop(ext.dd.DragDrop target, System.Html.ElementEvent e, string id)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// An empty function by default, but provided so that you can perform a custom action
		/// after a valid drop has occurred by providing an implementation.
		/// </summary>
		/// <definedin>src\dd\DragSource.js</definedin>
		/// <param name="target">The target DD</param>
		/// <param name="e">The event object</param>
		/// <param name="id">The id of the dropped element</param>
		[ScriptName("afterInvalidDrop")]
		public void AfterInvalidDrop(object target, System.Html.ElementEvent e, string id)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// An empty function by default, but provided so that you can perform a custom action
		/// after an invalid drop has occurred by providing an implementation.
		/// </summary>
		/// <definedin>src\dd\DragSource.js</definedin>
		/// <param name="e">The event object</param>
		/// <param name="id">The id of the dropped element</param>
		[ScriptName("afterInvalidDrop")]
		public void AfterInvalidDrop(System.Html.ElementEvent e, string id)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// An empty function by default, but provided so that you can perform a custom action after an invalid
		/// drop has occurred.
		/// </summary>
		/// <definedin>src\dd\DragSource.js</definedin>
		/// <param name="target">The drop target</param>
		/// <param name="e">The event object</param>
		/// <param name="id">The id of the dragged element</param>
		/// <returns>isValid True if the invalid drop should proceed, else false to cancel</returns>
		[ScriptName("beforeInvalidDrop")]
		public bool BeforeInvalidDrop(ext.dd.DragDrop target, System.Html.ElementEvent e, string id)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// An empty function by default, but provided so that you can perform a custom action before the initial
		/// drag event begins and optionally cancel it.
		/// </summary>
		/// <definedin>src\dd\DragSource.js</definedin>
		/// <param name="data">An object containing arbitrary data to be shared with drop targets</param>
		/// <param name="e">The event object</param>
		/// <returns>isValid True if the drag event is valid, else false to cancel</returns>
		[ScriptName("onBeforeDrag")]
		public bool OnBeforeDrag(object data, System.Html.ElementEvent e)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// An empty function by default, but provided so that you can perform a custom action once the initial
		/// drag event has begun. The drag cannot be canceled from this function.
		/// </summary>
		/// <definedin>src\dd\DragSource.js</definedin>
		/// <param name="x">The x position of the click on the dragged object</param>
		/// <param name="y">The y position of the click on the dragged object</param>
		[ScriptName("onStartDrag")]
		public void OnStartDrag(System.Number x, System.Number y)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns the drag source&apos;s underlying {@link Ext.dd.StatusProxy}</summary>
		/// <definedin>src\dd\DragSource.js</definedin>
		/// <returns>proxy The StatusProxy</returns>
		[ScriptName("getProxy")]
		public ext.dd.StatusProxy GetProxy()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Hides the drag source&apos;s {@link Ext.dd.StatusProxy}</summary>
		/// <definedin>src\dd\DragSource.js</definedin>
		[ScriptName("hideProxy")]
		public void HideProxy()
		{
			throw new System.Exception("Imported - not implemented");
		}
		#endregion
	}
}
